Traditionally, peripheral output testing has been performed by running various test applications on machines connected to physical peripherals, such as printers, and manually verifying the physical output. For example, to test an updated printer driver, a test page would be printed using the updated printer driver and a human being would physically compare the printed test page to a baseline test page (e.g., a known-good test page). This is a very tedious process and can become very costly in terms of consumable resources, such as manpower, paper, and printer ink. The current method of testing is also error-prone as it relies on human ability to detect slight differences in output.
Moreover, specific device manufacturers can create viewers and verification tests to ensure that their device drivers function properly. This is because each device manufacturer has access to and is very familiar with the output format of all its devices, such as a Page Description Language (PDL) for printers. However, some entities, such as operating system developers, are responsible for verifying many different device drivers from many different device manufacturers. It is practically impossible to learn every device manufacturer's individual output description languages adequately enough for these entities to verify correctness.
An adequate device driver testing infrastructure has eluded those skilled in the art, until now.